home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Deutsche Edition 1
/
Deutsche Edition 1.iso
/
amok
/
041-050
/
amok48
/
module
/
txt
/
dynstr.mod
< prev
next >
Wrap
Text File
|
1993-11-04
|
2KB
|
73 lines
(**********************************************************************
:Program. DynStr.mod
:Contens. Ein Bibliotheksmodul für dynamische Strings.
:Author. Bernd Braun
:Address. Lippestr. 11, D-3300 Braunschweig
:Phone. 0531/845498
:Copyright. Public Domain
:Language. Modula-2
:Translator. M2Amiga A+L V3.32d
:History. V1.0 3.Okt.1990 Erste lauffähige Version
***********************************************************************)
IMPLEMENTATION MODULE DynStr;
(* $R- $S- $F- $V- *)
FROM Arts IMPORT
Assert;
FROM ASCII IMPORT
nul;
FROM Exec IMPORT
CopyMem;
FROM Storage IMPORT
ALLOCATE, DEALLOCATE;
FROM Str IMPORT
Length, Copy, Compare;
FROM SYSTEM IMPORT
ADR;
CONST
errmsg = 'DynStr: DynString ist NIL!';
(* Erzeugt aus StatString einen DynString und reserviert für ihn
Speicher. *)
PROCEDURE MakeDynString ( VAR StatString : ARRAY OF CHAR;
VAR S : DynString );
VAR
AnzahlBytes, i : INTEGER;
BEGIN
AnzahlBytes := Length ( StatString );
ALLOCATE ( S, AnzahlBytes + 1 );
CopyMem ( ADR ( StatString ), S, AnzahlBytes );
S ^ [ AnzahlBytes ] := nul;
END MakeDynString;
(* Copiert einen DynString in einen StatString. *)
PROCEDURE MakeStatString ( VAR StatString : ARRAY OF CHAR;
S : DynString );
BEGIN
Assert ( S # NIL, ADR ( errmsg ) );
Copy ( StatString, S ^ );
END MakeStatString;
(* Löscht einen Dynstring. *)
PROCEDURE ForgetDynString ( VAR S : DynString );
BEGIN
Assert ( S # NIL, ADR ( errmsg ) );
DEALLOCATE ( S, Length ( S ^ ) + 1 );
S := NIL;
END ForgetDynString;
(* Vergleicht zwei DynStrings. *)
PROCEDURE DynStringCompare ( S1, S2 : DynString ) : INTEGER;
BEGIN
Assert ( S1 # NIL, ADR ( errmsg ) );
Assert ( S2 # NIL, ADR ( errmsg ) );
RETURN Compare ( S1 ^, S2 ^ );
END DynStringCompare;
END DynStr.